package com.gjintel.business.proj.dao;

import java.util.Date;
import java.util.List;

import com.gjintel.business.proj.model.BidderChange;
import com.gjintel.business.proj.model.DepositReturn;
import com.gjintel.business.proj.model.ProjectBidInfo;
import com.gjintel.business.proj.model.ProjectInfo;
import com.gjintel.framework.register.model.DepositCategory;
import com.gjintel.sdk.base.dao.Page;

public interface IProjectBidDao {

	/**
	 * @description 获取中标信息
	 * @author shy
	 * @param projectId
	 * @param winningId
	 * @return
	 */
	public List<ProjectBidInfo> getProjectBid(String projectId, String winningId);

	/**
	 * @description 获取参与投标的人数
	 * @param projectId
	 * @author shy
	 * @return
	 */
	public List<ProjectBidInfo> getProjectBidCount(String projectId);

	/**
	 * @description 获取中标信息
	 * @param projectId
	 * @author shy
	 * @return
	 */
	public List<ProjectBidInfo> getProjectBid(String projectId);

	/**
	 * @description 获取非中标信息列表
	 * @author shy
	 * @param projectId
	 * @return
	 */
	public List<ProjectBidInfo> getProjectBidList(String projectId, Page page);

	/**
	 * @description 获取投标信息
	 * @author shy
	 * @param projectId
	 * @return
	 */
	public List<ProjectBidInfo> getProjectBidByProjectId(String projectId);

	/**
	 * @description 根据id获取投标信息
	 * @author shy
	 * @param projectId
	 * @return
	 */
	public List<ProjectBidInfo> getProjectBidInfoById(String id);

	/**
	 * @description 获取协议保证金类型
	 * @author shy
	 * @param projectId
	 * @param category
	 * @return
	 */
	public List<DepositCategory> getDepositCategory(String winningId, String category);

	/**
	 * @description 查询中标人是否交了该项目类型的协议保证金
	 * @param winningId
	 * @param category
	 * @return
	 */
	public List<ProjectBidInfo> getUnReturnList(String projectId, Integer depositStatus, String winningId);

	/**
	 * @description 获取未中标，未退还保证金的投标信息
	 * @param winningId
	 * @param category
	 * @return
	 */
	public List<ProjectBidInfo> getUnWinAndUnReturnList(String projectId, Integer depositStatus);

	/**
	 * @description查询投标信息
	 * @author wwang
	 * @date 2016年9月23日
	 * @param projectId
	 * @param evalutionResult
	 *            1.合格，2.不合格,0: 未评标
	 * @return
	 */
	public int getProjectBidCountByProjIdAndEvalutionResult(String projectId, int evalutionResult);

	/**
	 * @description 根据projectId 查询DepositReturn list
	 * @author shy
	 * @date 2016年10月22日
	 * @return
	 */
	public List<DepositReturn> getDepositReturnList(String projectId);

	/**
	 * @description 获取非中标人的退还保证金列表
	 * @author shy
	 * @date 2016年10月22日
	 */

	public List<DepositReturn> getUnBidDepositReturn(String projectId, String loginName, Page page, Integer type);

	/**
	 * @description 查询同一时间点开标的项目数量
	 * @author shy
	 * @date 2016年11月29日
	 * @return
	 */
	public Integer getProjectCount(Date date);

	/**
	 * 原开标项目编号搜索自动完成
	 * 
	 * @return
	 */
	public List<ProjectInfo> getProjectCodeCombo();

	/**
	 * 查询项目
	 * @param project
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	public List<ProjectInfo> findListByWhere(ProjectInfo project, Date startTime, Date endTime);
	
	/**
	 * @description 获取有效投标时间
	 * @param projectInfo
	 * @return
	 */
	public List<ProjectBidInfo> findValidBidInfo(ProjectInfo  pro,Page page);
	
	
	/**
	 * @description 获取中标者中标信息
	 * @param projectId
	 * @param bidderId
	 * @return
	 */
	public ProjectBidInfo getBidderInfo(String projectId,String bidderId);


	public List<BidderChange> getBidderChanList(Page page);

	/**
	 * 获取保证金信息（不评标）
	 * @param projectId
	 * @param page
	 * @param type
	 * @return
	 */
	public List<DepositReturn> getDepositReturnNoEvaluation(String projectId,Integer type);
	

}
